package com.f21.f21assessoria.model.ergonometria;

import java.io.Serializable;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.ManyToOne;

import com.f21.f21assessoria.model.ergonometria.cadastro.TabelaPorcentagem;

@Entity
public class VelocidadeTreino implements Operador,Serializable,Comparable<VelocidadeTreino> {
	
	private static final long serialVersionUID = 1L;

	@Id
	private double percentual;
	
	private double velocidade;
	
	@ManyToOne(fetch = FetchType.LAZY)
	private Treinamento treinamento;

	@Deprecated
	VelocidadeTreino(){
		
	}
	
	public VelocidadeTreino(TabelaPorcentagem tPercentual) {
		this.percentual = tPercentual.getPorcentagem();
		this.velocidade = tPercentual.getValorVelocidade();
	}
	
	public String getVelocidadeTreino(){
		double valor = (double) (((velocidade - 3.5)/0.2)*60)/1000;
		
		return new DecimalFormat("0.00").format(valor);
	}

	/**
	 * @see com.f21.f21assessoria.model.ergonometria.Operador#opera(com.f21.f21assessoria.model.ergonometria.Operavel)
	 */
	public void opera(Operavel op) {
		Treinamento treinamento = (Treinamento) op;
		this.treinamento = treinamento;
		this.treinamento.getListVelocTreino().add(this);
	}
	public double getPercentual() {
		return percentual;
	}
	public void setPercentual(double percentual) {
		this.percentual = percentual;
	}
	public Treinamento getTreinamento() {
		return treinamento;
	}
	
	public void setTreinamento(Treinamento treinamento) {
		this.treinamento = treinamento;
	}
	
	@Override
	public int compareTo(VelocidadeTreino o) {
		final int BEFORE = -1;
	    final int EQUAL = 0;
	    final int AFTER = 1;
		
	    if(this.percentual < o.percentual) return BEFORE;
	    if(this.percentual > o.percentual) return AFTER;
	    return EQUAL;
	    
	}

}
